<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>C++题库 - C++学习入门</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link
        href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Inter:wght@300;400;500;600;700&family=Montserrat:wght@400;500;600;700;800&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="../css/style2.css">
    <link rel="stylesheet" href="../css/quiz.css">
    <!-- 引入Font Awesome图标库 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">

</head>

<body>
    <header>
        <nav>
            <!-- 移动端主题切换按钮 -->
            <button id="mobile-theme-toggle" class="mobile-theme-toggle-btn">
                <i class="fas fa-sun"></i>
                <i class="fas fa-moon"></i>
            </button>
            <div class="logo">C++学习入门</div>
            <ul class="nav-links">
                <li><a href="../index.html">首页</a></li>
                <li><a href="basics.html">基础语法</a></li>
                <li><a href="oop.html">面向对象</a></li>
                <li><a href="advanced.html">高级特性</a></li>
                <li><a href="effective.html">Effective C++</a></li>
                <li><a href="stl.html">STL源码剖析</a></li>
                <li><a href="quiz.html" class="active">题库</a></li>
                <li><a href="achievements.html">成就系统</a></li>
                <li><a href="../forum.html">论坛</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle">账户 <i class="fas fa-chevron-down"></i></a>
                    <ul class="dropdown-menu">
                        <li><a href="#login-modal">登录</a></li>
                        <li><a href="#register-modal">注册</a></li>
                    </ul>
                </li>
                <li><a href="../about.html">关于我们</a></li>
                <li><button id="theme-toggle" class="theme-toggle-btn">
                        <i class="fas fa-sun"></i>
                        <i class="fas fa-moon"></i>
                    </button></li>
            </ul>
            <div class="burger">
                <div class="line1"></div>
                <div class="line2"></div>
                <div class="line3"></div>
            </div>
        </nav>
    </header>

    <main class="tutorial-container">
        <div class="tutorial-sidebar">
            <h3>题库分类</h3>
            <ul class="tutorial-nav">
                <li><a href="#basic-quiz">基础语法</a></li>
                <li><a href="#oop-quiz">面向对象</a></li>
                <li><a href="#advanced-quiz">高级特性</a></li>
                <li><a href="#effective-quiz">Effective C++</a></li>
                <li><a href="#stl-quiz">STL源码解析</a></li>
            </ul>
            <div class="quiz-stats">
                <h3>学习统计</h3>
                <div class="stat-item">
                    <span class="stat-label">基础语法</span>
                    <span class="stat-value" id="basic-score">0/8</span>
                </div>
                <div class="stat-item">
                    <span class="stat-label">面向对象</span>
                    <span class="stat-value" id="oop-score">0/8</span>
                </div>
                <div class="stat-item">
                    <span class="stat-label">高级特性</span>
                    <span class="stat-value" id="advanced-score">0/8</span>
                </div>
                <div class="stat-item">
                    <span class="stat-label">Effective C++</span>
                    <span class="stat-value" id="effective-score">0/8</span>
                </div>
                <div class="stat-item">
                    <span class="stat-label">STL源码解析</span>
                    <span class="stat-value" id="stl-score">0/8</span>
                </div>
                <div class="stat-item">
                    <span class="stat-label">总体进度</span>
                    <span class="stat-value" id="overall-progress">0/40</span>
                </div>
                <button id="clear-quiz-data" class="clear-data-btn">
                    <i class="fas fa-trash-alt"></i> 清空答题记录
                </button>
            </div>
        </div>

        <div class="tutorial-content">
            <h1>C++题库</h1>
            <p class="intro">这里提供了各种类型的C++编程题目，帮助你巩固所学知识。选择一个分类开始练习吧！</p>
            
            <!-- 账户关联提示 -->
            <div class="account-notice">
                <i class="fas fa-info-circle"></i>
                <span><strong>注意：</strong>答题情况与账户关联，若不登陆账户则答题情况将不会被记录！</span>
            </div>

            <section id="basic-quiz" class="section">
                <h2>基础语法题库</h2>
                <p>本部分包含C++基础语法相关的题目，涵盖数据类型、变量、控制流等内容。</p>
                <div class="quiz-category">
                    <div class="quiz-section" data-section="basic">
                    <div class="quiz-list">
                            <div class="quiz-item" data-id="basic_q1" data-category="basic" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">1.</span> C++中，以下哪个不是基本数据类型？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q1" value="A"> A. int</div>
                                    <div class="option"><input type="radio" name="basic_q1" value="B"> B. float</div>
                                    <div class="option"><input type="radio" name="basic_q1" value="C"> C. string</div>
                                    <div class="option"><input type="radio" name="basic_q1" value="D"> D. bool</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：string不是C++的基本数据类型，而是标准库中的一个类。基本数据类型包括int、float、double、char、bool等。</p>
                            </div>
                        </div>

                            <div class="quiz-item" data-id="basic_q2" data-category="basic" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">2.</span> 以下哪个是C++程序的入口点？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q2" value="A"> A. main()函数</div>
                                    <div class="option"><input type="radio" name="basic_q2" value="B"> B. start()函数</div>
                                    <div class="option"><input type="radio" name="basic_q2" value="C"> C. init()函数</div>
                                    <div class="option"><input type="radio" name="basic_q2" value="D"> D. begin()函数</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：每个C++程序都必须有且只有一个main()函数，它是程序的入口点，程序执行从main()函数开始。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="basic_q3" data-category="basic" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">3.</span> C++中，以下哪个关键字用于声明变量为常量？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q3" value="A"> A. final</div>
                                    <div class="option"><input type="radio" name="basic_q3" value="B"> B. const</div>
                                    <div class="option"><input type="radio" name="basic_q3" value="C"> C. static</div>
                                    <div class="option"><input type="radio" name="basic_q3" value="D"> D. readonly</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：const关键字用于声明常量，一旦初始化后就不能修改其值。static用于静态变量，final和readonly不是C++关键字。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="basic_q4" data-category="basic" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">4.</span> C++中，以下哪个运算符用于获取变量的地址？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q4" value="A"> A. *</div>
                                    <div class="option"><input type="radio" name="basic_q4" value="B"> B. &</div>
                                    <div class="option"><input type="radio" name="basic_q4" value="C"> C. @</div>
                                    <div class="option"><input type="radio" name="basic_q4" value="D"> D. #</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：&（取地址运算符）用于获取变量的内存地址，*是解引用运算符，@和#不是C++中的地址运算符。</p>
                        </div>
                    </div>

                            <div class="quiz-item" data-id="basic_q5" data-category="basic" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">5.</span> 以下哪个循环结构可以保证至少执行一次？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q5" value="A"> A. for循环</div>
                                    <div class="option"><input type="radio" name="basic_q5" value="B"> B. while循环</div>
                                    <div class="option"><input type="radio" name="basic_q5" value="C"> C. do-while循环</div>
                                    <div class="option"><input type="radio" name="basic_q5" value="D"> D. 都不能保证</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：do-while循环先执行循环体，再检查条件，因此至少会执行一次。而for和while循环都是先检查条件再执行。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="basic_q6" data-category="basic" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">6.</span> C++中，以下哪个是正确的数组声明语法？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q6" value="A"> A. int arr[];</div>
                                    <div class="option"><input type="radio" name="basic_q6" value="B"> B. int arr[10];</div>
                                    <div class="option"><input type="radio" name="basic_q6" value="C"> C. int [10]arr;</div>
                                    <div class="option"><input type="radio" name="basic_q6" value="D"> D. array int arr[10];</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：正确的数组声明语法是"数据类型 数组名[大小]"，如int arr[10]。选项A缺少大小，C和D语法错误。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="basic_q7" data-category="basic" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">7.</span> C++中，switch语句中如果没有break会发生什么？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q7" value="A"> A. 编译错误</div>
                                    <div class="option"><input type="radio" name="basic_q7" value="B"> B. 运行时错误</div>
                                    <div class="option"><input type="radio" name="basic_q7" value="C"> C. 继续执行下一个case</div>
                                    <div class="option"><input type="radio" name="basic_q7" value="D"> D. 自动跳出switch</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：如果case语句后没有break，程序会继续执行下一个case，这称为"fall through"现象。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="basic_q8" data-category="basic" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">8.</span> C++中，以下哪个关键字用于定义命名空间？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="basic_q8" value="A"> A. namespace</div>
                                    <div class="option"><input type="radio" name="basic_q8" value="B"> B. using</div>
                                    <div class="option"><input type="radio" name="basic_q8" value="C"> C. class</div>
                                    <div class="option"><input type="radio" name="basic_q8" value="D"> D. struct</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：namespace关键字用于定义命名空间，可以避免名称冲突。using关键字用于引入命名空间或声明别名。</p>
                                </div>
                            </div>
                        </div>
                        <div class="section-submit">
                            <button class="btn submit-section" data-section="basic">提交基础语法部分</button>
                            <div class="section-result hidden" id="basic-result"></div>
                        </div>
                    </div>
                </div>
            </section>

            <section id="oop-quiz" class="section">
                <h2>面向对象题库</h2>
                <p>本部分包含C++面向对象编程相关的题目，涵盖类、对象、继承、多态等内容。</p>
                <div class="quiz-category">
                    <div class="quiz-section" data-section="oop">
                    <div class="quiz-list">
                            <div class="quiz-item" data-id="oop_q1" data-category="oop" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">1.</span> 以下哪个关键字用于定义类的继承？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q1" value="A"> A. extends</div>
                                    <div class="option"><input type="radio" name="oop_q1" value="B"> B. inherits</div>
                                    <div class="option"><input type="radio" name="oop_q1" value="C"> C. : (冒号)</div>
                                    <div class="option"><input type="radio" name="oop_q1" value="D"> D. -> (箭头)</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                <p>解析：在C++中，使用冒号(:)来表示类的继承关系，例如：class Derived : public Base { ... }。</p>
                            </div>
                        </div>

                            <div class="quiz-item" data-id="oop_q2" data-category="oop" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">2.</span> 以下哪个关键字用于声明虚函数？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q2" value="A"> A. virtual</div>
                                    <div class="option"><input type="radio" name="oop_q2" value="B"> B. override</div>
                                    <div class="option"><input type="radio" name="oop_q2" value="C"> C. abstract</div>
                                    <div class="option"><input type="radio" name="oop_q2" value="D"> D. interface</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                <p>解析：在C++中，使用virtual关键字来声明虚函数，虚函数是实现多态的基础。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="oop_q3" data-category="oop" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">3.</span> C++中，以下哪个访问修饰符表示类的成员只能在类内部访问？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q3" value="A"> A. public</div>
                                    <div class="option"><input type="radio" name="oop_q3" value="B"> B. private</div>
                                    <div class="option"><input type="radio" name="oop_q3" value="C"> C. protected</div>
                                    <div class="option"><input type="radio" name="oop_q3" value="D"> D. internal</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：private访问修饰符表示成员只能在类内部访问，protected允许子类访问，public允许外部访问。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="oop_q4" data-category="oop" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">4.</span> C++中，构造函数的名称必须与什么相同？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q4" value="A"> A. 父类名</div>
                                    <div class="option"><input type="radio" name="oop_q4" value="B"> B. 类名</div>
                                    <div class="option"><input type="radio" name="oop_q4" value="C"> C. 函数名</div>
                                    <div class="option"><input type="radio" name="oop_q4" value="D"> D. 变量名</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：C++中构造函数的名称必须与类名完全相同，且没有返回类型。</p>
                        </div>
                    </div>

                            <div class="quiz-item" data-id="oop_q5" data-category="oop" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">5.</span> 以下哪种继承方式使得基类的public成员在派生类中变为private？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q5" value="A"> A. public继承</div>
                                    <div class="option"><input type="radio" name="oop_q5" value="B"> B. protected继承</div>
                                    <div class="option"><input type="radio" name="oop_q5" value="C"> C. private继承</div>
                                    <div class="option"><input type="radio" name="oop_q5" value="D"> D. 以上都不是</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：private继承会使基类的public和protected成员在派生类中都变为private成员。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="oop_q6" data-category="oop" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">6.</span> C++中，析构函数的名称是什么？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q6" value="A"> A. ~类名</div>
                                    <div class="option"><input type="radio" name="oop_q6" value="B"> B. delete类名</div>
                                    <div class="option"><input type="radio" name="oop_q6" value="C"> C. destroy类名</div>
                                    <div class="option"><input type="radio" name="oop_q6" value="D"> D. 类名_destructor</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：C++中析构函数的名称是~加上类名，如~ClassName，用于释放对象占用的资源。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="oop_q7" data-category="oop" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">7.</span> 以下哪个关键字用于实现运行时多态？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q7" value="A"> A. static</div>
                                    <div class="option"><input type="radio" name="oop_q7" value="B"> B. virtual</div>
                                    <div class="option"><input type="radio" name="oop_q7" value="C"> C. const</div>
                                    <div class="option"><input type="radio" name="oop_q7" value="D"> D. inline</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：virtual关键字用于声明虚函数，通过虚函数表实现运行时多态，允许基类指针调用派生类的重写函数。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="oop_q8" data-category="oop" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">8.</span> C++中，友元函数用什么关键字声明？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="oop_q8" value="A"> A. friend</div>
                                    <div class="option"><input type="radio" name="oop_q8" value="B"> B. buddy</div>
                                    <div class="option"><input type="radio" name="oop_q8" value="C"> C. companion</div>
                                    <div class="option"><input type="radio" name="oop_q8" value="D"> D. extern</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：friend关键字用于声明友元函数，友元函数可以访问类的私有和保护成员。</p>
                                </div>
                            </div>
                        </div>
                        <div class="section-submit">
                            <button class="btn submit-section" data-section="oop">提交面向对象部分</button>
                            <div class="section-result hidden" id="oop-result"></div>
                        </div>
                    </div>
                </div>
            </section>

            <section id="advanced-quiz" class="section">
                <h2>高级特性题库</h2>
                <p>本部分包含C++高级特性相关的题目，涵盖模板、异常处理、智能指针等内容。</p>
                <div class="quiz-category">
                    <div class="quiz-section" data-section="advanced">
                    <div class="quiz-list">
                            <div class="quiz-item" data-id="advanced_q1" data-category="advanced" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">1.</span> 以下哪个是C++中用于定义模板函数的关键字？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q1" value="A"> A. template</div>
                                    <div class="option"><input type="radio" name="advanced_q1" value="B"> B. pattern</div>
                                    <div class="option"><input type="radio" name="advanced_q1" value="C"> C. generic</div>
                                    <div class="option"><input type="radio" name="advanced_q1" value="D"> D. type</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：在C++中，使用template关键字来定义模板函数或模板类，实现泛型编程。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q2" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">2.</span> 以下哪个关键字用于抛出异常？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q2" value="A"> A. catch</div>
                                    <div class="option"><input type="radio" name="advanced_q2" value="B"> B. throw</div>
                                    <div class="option"><input type="radio" name="advanced_q2" value="C"> C. try</div>
                                    <div class="option"><input type="radio" name="advanced_q2" value="D"> D. exception</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：在C++中，使用throw关键字来抛出异常，使用try-catch块来捕获和处理异常。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q3" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">3.</span> C++11引入的智能指针中，哪个可以实现共享所有权？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q3" value="A"> A. unique_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q3" value="B"> B. shared_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q3" value="C"> C. weak_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q3" value="D"> D. auto_ptr</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：shared_ptr允许多个指针共享同一个对象的所有权，使用引用计数来管理对象的生命周期。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q4" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">4.</span> C++中，以下哪个关键字用于声明右值引用？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q4" value="A"> A. &</div>
                                    <div class="option"><input type="radio" name="advanced_q4" value="B"> B. &&</div>
                                    <div class="option"><input type="radio" name="advanced_q4" value="C"> C. *</div>
                                    <div class="option"><input type="radio" name="advanced_q4" value="D"> D. **</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：C++11引入了右值引用，使用&&来声明，主要用于移动语义和完美转发。</p>
                            </div>
                        </div>

                            <div class="quiz-item" data-id="advanced_q5" data-category="advanced" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">5.</span> 以下哪个关键字用于声明lambda表达式？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q5" value="A"> A. lambda</div>
                                    <div class="option"><input type="radio" name="advanced_q5" value="B"> B. []</div>
                                    <div class="option"><input type="radio" name="advanced_q5" value="C"> C. func</div>
                                    <div class="option"><input type="radio" name="advanced_q5" value="D"> D. auto</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：C++11中lambda表达式以[]开始，如[](int x){ return x*2; }，提供了匿名函数的功能。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q6" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">6.</span> C++中，以下哪个关键字用于指定函数不会抛出异常？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q6" value="A"> A. noexcept</div>
                                    <div class="option"><input type="radio" name="advanced_q6" value="B"> B. nothrow</div>
                                    <div class="option"><input type="radio" name="advanced_q6" value="C"> C. safe</div>
                                    <div class="option"><input type="radio" name="advanced_q6" value="D"> D. noexception</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：A</strong></p>
                                    <p>解析：noexcept关键字用于指定函数不会抛出异常，有助于编译器优化和程序的性能提升。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q7" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">7.</span> C++中，以下哪个关键字用于类型推导？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q7" value="A"> A. var</div>
                                    <div class="option"><input type="radio" name="advanced_q7" value="B"> B. auto</div>
                                    <div class="option"><input type="radio" name="advanced_q7" value="C"> C. type</div>
                                    <div class="option"><input type="radio" name="advanced_q7" value="D"> D. infer</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：auto关键字用于自动类型推导，编译器会根据初始化表达式自动推断变量的类型。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="advanced_q8" data-category="advanced" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">8.</span> 在C++11中，以下哪个智能指针允许多个指针共享同一个对象的所有权？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="advanced_q8" value="A"> A. std::unique_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q8" value="B"> B. std::shared_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q8" value="C"> C. std::weak_ptr</div>
                                    <div class="option"><input type="radio" name="advanced_q8" value="D"> D. std::auto_ptr</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：std::shared_ptr 是一个智能指针，它允许多个 shared_ptr 实例共享同一个对象的所有权。它使用引用计数来管理对象的生命周期，当最后一个 shared_ptr 被销毁时，所管理的对象也会被自动删除。unique_ptr 是独占所有权的，weak_ptr 不拥有对象，auto_ptr 在C++11中已被弃用。</p>
                                </div>
                            </div>
                        </div>
                        <div class="section-submit">
                            <button class="btn submit-section" data-section="advanced">提交高级特性部分</button>
                            <div class="section-result hidden" id="advanced-result"></div>
                        </div>
                    </div>
                </div>
            </section>

            <section id="effective-quiz" class="section">
                <h2>Effective C++题库</h2>
                <p>本部分包含基于《Effective C++》的高质量C++编程建议，涵盖最佳实践和常见陷阱。</p>
                <div class="quiz-category">
                    <div class="quiz-section" data-section="effective">
                    <div class="quiz-list">
                            <div class="quiz-item" data-id="effective_q1" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">1.</span> 根据Effective C++，为什么应该尽量以const、enum、inline替换#define？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q1" value="A"> A. 编译速度更快</div>
                                    <div class="option"><input type="radio" name="effective_q1" value="B"> B. 提供类型检查和作用域控制</div>
                                    <div class="option"><input type="radio" name="effective_q1" value="C"> C. 占用内存更少</div>
                                    <div class="option"><input type="radio" name="effective_q1" value="D"> D. 语法更简单</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：const、enum、inline提供类型检查，有作用域概念，在调试时也更友好，而#define是简单的文本替换。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q2" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">2.</span> 在类中同时提供拷贝构造函数和赋值运算符时，应该遵循什么原则？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q2" value="A"> A. 两者实现完全相同</div>
                                    <div class="option"><input type="radio" name="effective_q2" value="B"> B. 只实现其中一个</div>
                                    <div class="option"><input type="radio" name="effective_q2" value="C"> C. copy and swap idiom</div>
                                    <div class="option"><input type="radio" name="effective_q2" value="D"> D. 随意实现</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：copy and swap idiom确保异常安全性和自赋值安全性，是实现赋值运算符的最佳实践。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q3" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">3.</span> 为什么应该让接口容易被正确使用，不易被误用？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q3" value="A"> A. 减少文档工作量</div>
                                    <div class="option"><input type="radio" name="effective_q3" value="B"> B. 提高代码执行效率</div>
                                    <div class="option"><input type="radio" name="effective_q3" value="C"> C. 降低客户犯错的机会</div>
                                    <div class="option"><input type="radio" name="effective_q3" value="D"> D. 简化代码结构</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：好的接口设计应该防止无效代码编译通过，消除客户错误的机会，提供行为一致的接口。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q4" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">4.</span> 关于RAII（Resource Acquisition Is Initialization）的说法，哪个是正确的？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q4" value="A"> A. 资源在使用时获取</div>
                                    <div class="option"><input type="radio" name="effective_q4" value="B"> B. 资源在对象构造时获取，析构时释放</div>
                                    <div class="option"><input type="radio" name="effective_q4" value="C"> C. 资源手动管理</div>
                                    <div class="option"><input type="radio" name="effective_q4" value="D"> D. 只适用于内存管理</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：RAII原则是在对象构造期间获取资源，在析构时自动释放，确保资源的正确管理。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q5" data-category="effective" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">5.</span> 为什么虚析构函数很重要？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q5" value="A"> A. 提高性能</div>
                                    <div class="option"><input type="radio" name="effective_q5" value="B"> B. 确保派生类对象通过基类指针删除时正确析构</div>
                                    <div class="option"><input type="radio" name="effective_q5" value="C"> C. 减少代码量</div>
                                    <div class="option"><input type="radio" name="effective_q5" value="D"> D. 便于调试</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：如果基类没有虚析构函数，通过基类指针删除派生类对象时只会调用基类析构函数，造成资源泄漏。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q6" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">6.</span> 什么是三法则（Rule of Three）？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q6" value="A"> A. 一个类最多有三个成员函数</div>
                                    <div class="option"><input type="radio" name="effective_q6" value="B"> B. 如果类需要自定义析构函数、拷贝构造函数或赋值运算符中的一个，通常需要定义所有三个</div>
                                    <div class="option"><input type="radio" name="effective_q6" value="C"> C. 继承层次不超过三层</div>
                                    <div class="option"><input type="radio" name="effective_q6" value="D"> D. 模板参数不超过三个</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：三法则指出，如果类需要用户定义的析构函数、拷贝构造函数或拷贝赋值运算符中的任何一个，它几乎肯定需要全部三个。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q7" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">7.</span> 为什么要避免在构造函数和析构函数中调用虚函数？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q7" value="A"> A. 编译错误</div>
                                    <div class="option"><input type="radio" name="effective_q7" value="B"> B. 性能问题</div>
                                    <div class="option"><input type="radio" name="effective_q7" value="C"> C. 不会调用派生类版本，破坏多态性</div>
                                    <div class="option"><input type="radio" name="effective_q7" value="D"> D. 语法不允许</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：在构造函数和析构函数执行期间，虚函数不是虚函数，不会调用派生类版本，这可能导致意外行为。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="effective_q8" data-category="effective" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">8.</span> 关于异常安全性，以下哪个保证最强？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="effective_q8" value="A"> A. 基本保证</div>
                                    <div class="option"><input type="radio" name="effective_q8" value="B"> B. 强烈保证</div>
                                    <div class="option"><input type="radio" name="effective_q8" value="C"> C. 不抛出保证</div>
                                    <div class="option"><input type="radio" name="effective_q8" value="D"> D. 弱保证</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：不抛出保证（nothrow guarantee）是最强的异常安全保证，承诺操作总是成功完成。</p>
                                </div>
                            </div>
                        </div>
                        <div class="section-submit">
                            <button class="btn submit-section" data-section="effective">提交Effective C++部分</button>
                            <div class="section-result hidden" id="effective-result"></div>
                        </div>
                    </div>
                </div>
            </section>

            <section id="stl-quiz" class="section">
                <h2>STL源码解析题库</h2>
                <p>本部分包含C++标准模板库(STL)源码解析相关的题目，涵盖容器、迭代器、算法等内容。</p>
                <div class="quiz-category">
                    <div class="quiz-section" data-section="stl">
                    <div class="quiz-list">
                            <div class="quiz-item" data-id="stl_q1" data-category="stl" data-type="single">
                            <div class="quiz-question">
                                <span class="question-number">1.</span> 以下哪个STL容器是基于动态数组实现的？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q1" value="A"> A. std::list</div>
                                    <div class="option"><input type="radio" name="stl_q1" value="B"> B. std::vector</div>
                                    <div class="option"><input type="radio" name="stl_q1" value="C"> C. std::set</div>
                                    <div class="option"><input type="radio" name="stl_q1" value="D"> D. std::map</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                <p>解析：std::vector是基于动态数组实现的，可以随机访问元素，而std::list是基于双向链表实现的，std::set和std::map是基于红黑树实现的。</p>
                            </div>
                        </div>

                            <div class="quiz-item" data-id="stl_q2" data-category="stl" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">2.</span> STL中的迭代器失效问题，以下哪种操作会导致vector的迭代器失效？
                            </div>
                            <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q2" value="A"> A. 访问元素</div>
                                    <div class="option"><input type="radio" name="stl_q2" value="B"> B. push_back导致重新分配内存</div>
                                    <div class="option"><input type="radio" name="stl_q2" value="C"> C. 修改元素值</div>
                                    <div class="option"><input type="radio" name="stl_q2" value="D"> D. 获取size</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：当vector的push_back操作导致容量不足需要重新分配内存时，所有迭代器都会失效。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="stl_q3" data-category="stl" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">3.</span> STL中，以下哪个容器的插入操作时间复杂度是O(1)？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q3" value="A"> A. std::vector（在中间插入）</div>
                                    <div class="option"><input type="radio" name="stl_q3" value="B"> B. std::list（在已知位置插入）</div>
                                    <div class="option"><input type="radio" name="stl_q3" value="C"> C. std::set</div>
                                    <div class="option"><input type="radio" name="stl_q3" value="D"> D. std::map</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：std::list在已知位置的插入操作是O(1)，而vector在中间插入需要移动元素是O(n)，set和map的插入是O(log n)。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="stl_q4" data-category="stl" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">4.</span> STL算法中，std::sort的时间复杂度是多少？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q4" value="A"> A. O(n)</div>
                                    <div class="option"><input type="radio" name="stl_q4" value="B"> B. O(n log n)</div>
                                    <div class="option"><input type="radio" name="stl_q4" value="C"> C. O(n²)</div>
                                    <div class="option"><input type="radio" name="stl_q4" value="D"> D. O(log n)</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：std::sort使用introsort算法，平均和最坏情况时间复杂度都是O(n log n)。</p>
                        </div>
                    </div>

                            <div class="quiz-item" data-id="stl_q5" data-category="stl" data-type="single">
                            <div class="quiz-question">
                                    <span class="question-number">5.</span> 关于STL的内存分配器，以下说法正确的是？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q5" value="A"> A. 所有容器都使用相同的分配器</div>
                                    <div class="option"><input type="radio" name="stl_q5" value="B"> B. 分配器负责内存的分配和释放</div>
                                    <div class="option"><input type="radio" name="stl_q5" value="C"> C. 分配器不能自定义</div>
                                    <div class="option"><input type="radio" name="stl_q5" value="D"> D. 分配器只处理内存分配</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：STL分配器负责内存的分配和释放，以及对象的构造和析构，可以自定义分配器。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="stl_q6" data-category="stl" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">6.</span> STL中，红黑树被用来实现哪些容器？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q6" value="A"> A. vector和deque</div>
                                    <div class="option"><input type="radio" name="stl_q6" value="B"> B. list和forward_list</div>
                                    <div class="option"><input type="radio" name="stl_q6" value="C"> C. set、map、multiset、multimap</div>
                                    <div class="option"><input type="radio" name="stl_q6" value="D"> D. unordered_set和unordered_map</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：C</strong></p>
                                    <p>解析：STL中的关联容器set、map、multiset、multimap都是基于红黑树实现的，保证了操作的对数时间复杂度。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="stl_q7" data-category="stl" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">7.</span> STL迭代器的五种类型中，哪种功能最强？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q7" value="A"> A. input_iterator</div>
                                    <div class="option"><input type="radio" name="stl_q7" value="B"> B. forward_iterator</div>
                                    <div class="option"><input type="radio" name="stl_q7" value="C"> C. bidirectional_iterator</div>
                                    <div class="option"><input type="radio" name="stl_q7" value="D"> D. random_access_iterator</div>
                            </div>
                            <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：D</strong></p>
                                    <p>解析：random_access_iterator随机访问迭代器功能最强，支持所有迭代器操作，包括算术运算和随机访问。</p>
                                </div>
                            </div>

                            <div class="quiz-item" data-id="stl_q8" data-category="stl" data-type="single">
                                <div class="quiz-question">
                                    <span class="question-number">8.</span> STL中的函数对象（仿函数）相比普通函数有什么优势？
                                </div>
                                <div class="quiz-options">
                                    <div class="option"><input type="radio" name="stl_q8" value="A"> A. 语法更简单</div>
                                    <div class="option"><input type="radio" name="stl_q8" value="B"> B. 可以内联优化，有状态信息</div>
                                    <div class="option"><input type="radio" name="stl_q8" value="C"> C. 占用内存更少</div>
                                    <div class="option"><input type="radio" name="stl_q8" value="D"> D. 编译速度更快</div>
                                </div>
                                <div class="quiz-explanation hidden">
                                    <p><strong>正确答案：B</strong></p>
                                    <p>解析：函数对象可以被编译器内联优化，性能更好，并且可以保存状态信息，比函数指针更灵活。</p>
                                </div>
                            </div>
                        </div>
                        <div class="section-submit">
                            <button class="btn submit-section" data-section="stl">提交STL源码解析部分</button>
                            <div class="section-result hidden" id="stl-result"></div>
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </main>

            <div>
            <section>
            </section>
        </div>
    </main>

    <!-- 登录模态框 -->
    <div id="login-modal" class="modal">
        <div class="modal-content">
            <span class="close-button">&times;</span>
            <h2>用户登录</h2>
            <form id="login-form">
                <div class="form-group">
                    <label for="login-username">用户名</label>
                    <input type="text" id="login-username" placeholder="请输入用户名" required>
                </div>
                <div class="form-group">
                    <label for="login-password">密码</label>
                    <input type="password" id="login-password" placeholder="请输入密码" required>
                </div>
                <div class="form-options">
                    <label class="checkbox-label">
                        <input type="checkbox"> 记住我
                    </label>
                    <a href="#forgot-password-modal" class="forgot-password">忘记密码?</a>
                </div>
                <button type="submit" class="modal-btn">登录</button>
                <p class="register-link">还没有账号? <a href="#register-modal">立即注册</a></p>
            </form>
        </div>
    </div>

    <!-- 注册模态框 -->
    <div id="register-modal" class="modal">
        <div class="modal-content">
            <span class="close-button">&times;</span>
            <h2>用户注册</h2>
            <form id="register-form">
                <div class="form-group">
                    <label for="register-username">用户名</label>
                    <input type="text" id="register-username" placeholder="请设置用户名" required>
                </div>
                <div class="form-group">
                    <label for="register-email">邮箱</label>
                    <input type="email" id="register-email" placeholder="请输入邮箱" required>
                </div>
                <div class="form-group">
                    <label for="register-password">密码</label>
                    <input type="password" id="register-password" placeholder="请设置密码" required>
                </div>
                <div class="form-group">
                    <label for="register-confirm-password">确认密码</label>
                    <input type="password" id="register-confirm-password" placeholder="请再次输入密码" required>
                </div>
                <div class="form-options">
                    <label class="checkbox-label">
                        <input type="checkbox" id="agree-terms" name="agree-terms" required> 我已阅读并同意<a href="#" class="terms-link">用户协议</a>和<a href="#" class="privacy-link">隐私政策</a>
                    </label>
                </div>
                <button type="submit" class="modal-btn">注册</button>
                <p class="login-link">已有账号? <a href="#login-modal">立即登录</a></p>
            </form>
        </div>
    </div>

    <!-- 忘记密码模态框 -->
    <div id="forgot-password-modal" class="modal">
        <div class="modal-content">
            <span class="close-button">&times;</span>
            <h2>重置密码</h2>
            <form id="forgot-password-form">
                <div class="form-group">
                    <label for="forgot-email">邮箱</label>
                    <input type="email" id="forgot-email" placeholder="请输入注册邮箱" required>
                </div>
                <div class="form-group">
                    <label for="forgot-new-password">新密码</label>
                    <input type="password" id="forgot-new-password" placeholder="请输入新密码" required>
                </div>
                <div class="form-group">
                    <label for="forgot-confirm-password">确认新密码</label>
                    <input type="password" id="forgot-confirm-password" placeholder="请确认新密码" required>
                </div>
                <button type="submit" class="modal-btn">重置密码</button>
                <p class="login-link">想起密码了? <a href="#login-modal">立即登录</a></p>
            </form>
        </div>
    </div>

    <!-- 用户协议模态框 -->
    <div id="terms-modal" class="modal">
        <div class="modal-content">
            <span class="close-button">&times;</span>
            <h2>用户协议</h2>
            <div class="modal-text">
                                <h3>第一条 协议概述</h3>
                <p>欢迎使用C++学习入门网站（以下简称"本网站"）。本协议是您（以下简称"用户"）与本网站之间关于使用本网站服务的法律协议。请在使用本网站前仔细阅读本协议，一旦您开始使用本网站，即表示您同意接受本协议的全部条款。</p>
                
                <h3>第二条 服务内容</h3>
                <p>本网站致力于为用户提供优质的C++编程学习服务，主要包括但不限于：</p>
                <ul>
                    <li>C++基础语法、面向对象、高级特性等教学内容</li>
                    <li>在线测验题库和学习评估系统</li>
                    <li>用户学习进度跟踪和成就系统</li>
                    <li>学习论坛和用户交流平台</li>
                    <li>AI智能助手服务</li>
                    <li>其他与C++学习相关的辅助功能</li>
                </ul>
                
                <h3>第三条 用户注册与账户管理</h3>
                <ol>
                    <li><strong>注册要求</strong>：用户需要提供真实有效的邮箱地址和用户名进行注册</li>
                    <li><strong>账户安全</strong>：用户有责任保护自己的账户密码安全，不得将账户借给他人使用</li>
                    <li><strong>信息准确性</strong>：用户应确保注册信息的真实性和准确性</li>
                    <li><strong>账户停用</strong>：如发现用户提供虚假信息或违反本协议，网站有权停用相关账户</li>
                </ol>
                
                <h3>第四条 用户行为规范</h3>
                <p>用户在使用本网站时，应当遵守以下规范：</p>
                <p><strong>允许的行为：</strong></p>
                <ul>
                    <li>正常学习C++编程知识</li>
                    <li>在论坛中进行友善的学术讨论</li>
                    <li>分享学习心得和编程经验</li>
                    <li>合理使用AI助手进行学习辅导</li>
                </ul>
                <p><strong>禁止的行为：</strong></p>
                <ul>
                    <li>发布违法、有害、威胁、侮辱、诽谤的内容</li>
                    <li>发布与C++学习无关的广告或垃圾信息</li>
                    <li>恶意攻击网站系统或其他用户</li>
                    <li>传播病毒、恶意代码或有害程序</li>
                    <li>侵犯他人知识产权或隐私权</li>
                    <li>利用技术手段绕过网站的限制措施</li>
                </ul>
                
                <h3>第五条 知识产权</h3>
                <ol>
                    <li><strong>网站内容版权</strong>：本网站提供的所有教学内容、代码示例、题库等均受版权保护</li>
                    <li><strong>用户生成内容</strong>：用户在论坛发表的原创内容，版权归用户所有，但用户授予本网站使用权</li>
                    <li><strong>合理使用</strong>：用户可以将学习内容用于个人学习目的，但不得用于商业用途</li>
                    <li><strong>侵权处理</strong>：如发现侵权行为，请及时联系我们处理</li>
                </ol>
                
                <h3>第六条 AI助手服务条款</h3>
                <ol>
                    <li><strong>服务性质</strong>：AI助手仅作为学习辅助工具，提供编程相关的答疑和指导</li>
                    <li><strong>服务限制</strong>：AI助手的回答仅供参考，不保证绝对准确性</li>
                    <li><strong>使用规范</strong>：禁止利用AI助手进行违法、有害或与学习无关的活动</li>
                    <li><strong>数据使用</strong>：与AI助手的对话可能被记录用于改进服务质量</li>
                </ol>
                
                <h3>第七条 免责声明</h3>
                <ol>
                    <li><strong>服务可用性</strong>：网站不保证服务的不间断性和完全准确性</li>
                    <li><strong>第三方链接</strong>：对于第三方网站的内容，本网站不承担责任</li>
                    <li><strong>用户损失</strong>：因不可抗力或技术故障导致的用户损失，网站不承担责任</li>
                    <li><strong>内容责任</strong>：用户对其发布的内容承担全部法律责任</li>
                </ol>
                
                <h3>第八条 协议修改与终止</h3>
                <ol>
                    <li><strong>修改权利</strong>：本网站保留随时修改本协议的权利，修改后的协议将在网站上公布</li>
                    <li><strong>终止条件</strong>：如用户违反本协议，网站有权终止提供服务</li>
                    <li><strong>协议效力</strong>：本协议的终止不影响双方在终止前产生的权利义务</li>
                </ol>
                
                <h3>第九条 争议解决</h3>
                <p>本协议的解释和执行均适用中华人民共和国法律。如发生争议，双方应友好协商解决；协商不成的，可向网站所在地人民法院提起诉讼。</p>
                
                <h3>第十条 联系方式</h3>
                <p>如对本协议有任何疑问，请通过以下方式与我们联系：</p>
                <ul>
                    <li>邮箱：Hsy@bit.edu.cn</li>
                    <li>地址：北京理工大学良乡校区</li>
                </ul>
                
                <p><strong>生效日期</strong>：本协议自2025年9月14日起生效。
            </div>
            <button class="modal-btn" onclick="closeModal('terms-modal'); showModal('register-modal')">返回</button>
        </div>
    </div>

    <!-- 隐私政策模态框 -->
    <div id="privacy-modal" class="modal">
        <div class="modal-content">
            <span class="close-button">&times;</span>
            <h2>隐私政策</h2>
            <div class="modal-text">
                                <h3>第一条 隐私政策概述</h3>
                <p>本隐私政策说明C++学习入门网站（以下简称"我们"或"本网站"）如何收集、使用、存储和保护您的个人信息。我们承诺保护您的隐私安全，请仔细阅读本政策。</p>
                
                <h3>第二条 信息收集</h3>
                <p>我们收集的信息类型包括：</p>
                
                <h4>1. 注册信息</h4>
                <ul>
                    <li>用户名</li>
                    <li>邮箱地址</li>
                    <li>密码（经过加密处理）</li>
                </ul>
                
                <h4>2. 学习数据</h4>
                <ul>
                    <li>学习进度和章节完成情况</li>
                    <li>测验成绩和答题记录</li>
                    <li>学习时长和访问频率</li>
                    <li>成就获得记录</li>
                </ul>
                
                <h4>3. 交互数据</h4>
                <ul>
                    <li>论坛发帖和回复内容</li>
                    <li>与AI助手的对话记录</li>
                    <li>用户反馈和建议</li>
                </ul>
                
                <h4>4. 技术信息</h4>
                <ul>
                    <li>IP地址和设备信息</li>
                    <li>浏览器类型和版本</li>
                    <li>操作系统信息</li>
                    <li>访问时间和页面浏览记录</li>
                </ul>
                
                <h3>第三条 信息使用目的</h3>
                <p>我们收集和使用您的个人信息主要用于以下目的：</p>
                
                <h4>1. 服务提供</h4>
                <ul>
                    <li>创建和管理用户账户</li>
                    <li>提供个性化学习内容</li>
                    <li>跟踪学习进度和成就</li>
                    <li>提供AI助手服务</li>
                </ul>
                
                <h4>2. 沟通联系</h4>
                <ul>
                    <li>发送重要通知和更新</li>
                    <li>回应用户询问和反馈</li>
                    <li>发送学习提醒和激励信息</li>
                </ul>
                
                <h4>3. 服务改进</h4>
                <ul>
                    <li>分析用户学习行为和偏好</li>
                    <li>优化网站功能和用户体验</li>
                    <li>开发新的学习功能</li>
                </ul>
                
                <h4>4. 安全保障</h4>
                <ul>
                    <li>防止欺诈和滥用行为</li>
                    <li>维护网站和用户安全</li>
                    <li>遵守法律法规要求</li>
                </ul>
                
                <h3>第四条 信息共享与披露</h3>
                <p>我们承诺不会出售您的个人信息，但在以下情况下可能共享信息：</p>
                
                <h4>1. 第三方服务商</h4>
                <ul>
                    <li>AI服务提供商（用于AI助手功能）</li>
                    <li>邮件服务提供商（用于发送验证邮件）</li>
                    <li>云存储服务商（用于数据备份）</li>
                </ul>
                
                <h4>2. 法律要求</h4>
                <ul>
                    <li>遵守适用法律法规的要求</li>
                    <li>响应政府部门的合法请求</li>
                    <li>保护我们或他人的合法权益</li>
                </ul>
                
                <h4>3. 业务转让</h4>
                <ul>
                    <li>在合并、收购或资产转让时，经用户同意后转让相关信息</li>
                </ul>
                
                <h3>第五条 数据存储与安全</h3>
                
                <h4>1. 存储方式</h4>
                <ul>
                    <li>用户数据主要存储在用户本地浏览器中</li>
                    <li>部分数据存储在安全的服务器环境中</li>
                    <li>采用加密技术保护敏感信息</li>
                </ul>
                
                <h4>2. 安全措施</h4>
                <ul>
                    <li>使用HTTPS协议保护数据传输</li>
                    <li>对密码进行加密存储</li>
                    <li>定期进行安全审计和漏洞修复</li>
                </ul>
                
                <h4>3. 数据保留</h4>
                <ul>
                    <li>账户信息在账户存续期间保留</li>
                    <li>学习数据保留期限不超过法律要求的期限</li>
                    <li>用户可以要求删除特定数据</li>
                </ul>
                
                <h3>第六条 用户权利</h3>
                <p>您对自己的个人信息享有以下权利：</p>
                <ol>
                    <li><strong>访问权</strong>：查看我们持有的您的个人信息</li>
                    <li><strong>更正权</strong>：更正不准确或不完整的个人信息</li>
                    <li><strong>删除权</strong>：在特定情况下要求删除您的个人信息</li>
                    <li><strong>限制处理权</strong>：限制我们处理您的个人信息</li>
                    <li><strong>数据携带权</strong>：以结构化格式获取您的数据副本</li>
                    <li><strong>撤回同意权</strong>：随时撤回对特定数据处理的同意</li>
                </ol>
                
                <h3>第七条 Cookie和跟踪技术</h3>
                
                <h4>1. Cookie使用</h4>
                <ul>
                    <li>用于保持登录状态和用户偏好</li>
                    <li>分析网站使用情况和性能</li>
                    <li>您可以通过浏览器设置控制Cookie</li>
                </ul>
                
                <h4>2. 本地存储</h4>
                <ul>
                    <li>使用localStorage存储学习进度</li>
                    <li>存储用户界面偏好设置</li>
                    <li>缓存常用数据以提升性能</li>
                </ul>
                
                <h3>第八条 儿童隐私保护</h3>
                <p>我们不会故意收集13岁以下儿童的个人信息。如果我们发现收集了儿童的个人信息，将立即删除相关信息。如果您是儿童的家长或监护人，发现儿童提供了个人信息，请联系我们。</p>
                
                <h3>第九条 国际数据传输</h3>
                <p>如果您的数据需要跨境传输，我们将采取适当的保护措施，确保数据安全，并遵守相关法律法规的要求。</p>
                
                <h3>第十条 政策更新</h3>
                <p>我们可能会不定期更新本隐私政策。重大变更时，我们会通过网站公告或邮件通知的方式告知您。继续使用我们的服务即表示您接受更新后的政策。</p>
                
                <h3>第十一条 联系我们</h3>
                <p>如果您对本隐私政策有任何疑问、意见或投诉，或希望行使您的个人信息权利，请通过以下方式联系我们：</p>
                <ul>
                    <li>邮箱：Hsy@bit.edu.cn</li>
                    <li>地址：北京理工大学良乡校区</li>
                </ul>
                <p>我们将在收到您的请求后30个工作日内给予回复。</p>
                
                <p><strong>生效日期</strong>：本隐私政策自2025年9月14日起生效。
            </div>
            <button class="modal-btn" onclick="closeModal('privacy-modal'); showModal('register-modal')">返回</button>
        </div>
    </div>

    <!-- 提示消息 -->
    <div id="toast-message" class="toast"></div>

    <!-- 数据存储管理 -->
    <script src="../js/data-storage.js"></script>
    <!-- 成就系统 -->
    <script src="../js/achievements.js"></script>
    <!-- 主脚本 -->
    <script src="../js/quiz.js"></script>
    <script src="../js/main2.js"></script>
    <script src="../js/ai-assistant.js"></script>
    <!-- 全局数据管理功能 -->
    <script src="../js/data-management-ui.js"></script>

    <footer>
        <p>&copy; 2025 C++学习入门网站. 保留所有权利.</p>
    </footer>
</body>

</html>